home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / amber / amber.lha / Sup.c < prev    next >
C/C++ Source or Header  |  1991-04-25  |  2KB  |  56 lines

  1. static char rcsid[] = "$Header: /var/a/oriole/u1/thekkath/amber/RCS/Sup.c,v 1.1 90/08/22 16:55:11 thekkath Exp Locker: thekkath $";
  2. #include <stdio.h>
  3. #include "Defs.h"
  4. #include "Call.h"
  5. #include "Segment.h"
  6. #include "Memory.h"
  7. #include "machdep.h"
  8. #include "hosts.h"
  9. #include "Rpc.h"
  10. #include <stdlib.h>
  11. #include <string.h>
  12. #include <osfcn.h>
  13.  
  14. int ClientCheckIn(struct amberhost *master, int nodeid)
  15. {
  16.  
  17.         if (!rpc->CheckIn(master,nodeid)) {
  18.                 Panic("Client: checkin");
  19.         }
  20.         pout("Client waiting for checkin ack");
  21.         rpc->WaitForMasterAck();
  22.         pout("Client done waiting for master to ack checkin");
  23.         return 1;
  24. }
  25.  
  26.  
  27. /*
  28.  * Main procedure for a slave node.  Get startup parameters from the command
  29.  * line arguments.  Start the local node and check in with the master.  When
  30.  * CheckIn returns all the other nodes have started and we're off and running.
  31.  */
  32. void SlaveMain(struct amberhost *master, char *argv[])
  33. {
  34.     int totalNodes;
  35.     int quantum;
  36.     int cpus;
  37.     int nodeId;
  38.  
  39.         nodeId = atoi(argv[5]);
  40.         totalNodes = atoi(argv[6]);
  41.         cpus = atoi(argv[7]);
  42.         quantum = atoi(argv[8]);
  43.  
  44.         pout("executing on remote node");
  45.         /* Init memory manager on slave node */
  46.         MemManager.init(nodeId);
  47.         /* start the slave server forrpc */
  48.         rpc->Export(nodeId,atoi(argv[3]),atoi(argv[4]));
  49.  
  50.     AmberEntry_StartNode(nodeId, totalNodes, cpus, quantum);
  51.     if (ClientCheckIn(master,nodeId) != 0) {
  52.         AmberEntry_RunNode(nodeId);
  53.         }
  54.         rpc->ShutDown();
  55. }
  56.